Vector Algebra using SIMD instructions

Goal of this excercise is to learn how to implement and use 3- and 4-dimensional Vector Algebra using SIMD instructions

  1. Implement scalar product (invariant mass) between two Lorentz vectors
  2. Implement Lorenz boost transformation
  3. Measure speed-up

Code

in include:
SSEVec.h  SSERot.h
in examples:
SSEVec_t.cpp

Hints


pfmon --long-smpl-period=5000 --resolve-addresses --smpl-per-function --smpl-show-top=20 ./a.out
pfmon -e UNHALTED_CORE_CYCLES,ARITH:CYCLES_DIV_BUSY,SSEX_UOPS_RETIRED:SCALAR_SINGLE,SSEX_UOPS_RETIRED:PACKED_SINGLE ./a.out k

References

Compiler intrinsics ( by Visual Studio 2010)
Lorentz boost in Root::Math